private subroutine Focompu(varmodel, hoo)
evaluation of the objective function
Arguments
Type |
Intent | Optional | Attributes |
|
Name |
|
integer(kind=short),
|
intent(in) |
|
|
:: |
varmodel |
|
real(kind=float),
|
intent(out) |
|
|
:: |
hoo |
|
Variables
Type |
Visibility | Attributes |
|
Name |
| Initial | |
real(kind=float),
|
public |
|
:: |
alpha |
|
|
|
real(kind=float),
|
public |
|
:: |
dif2 |
|
|
|
real(kind=float),
|
public |
|
:: |
gam |
|
|
|
real(kind=float),
|
public |
|
:: |
h |
|
|
|
integer(kind=short),
|
public |
|
:: |
i |
|
|
|
integer(kind=short),
|
public |
|
:: |
j |
|
|
|
real(kind=float),
|
public |
|
:: |
wei |
|
|
|
Source Code
SUBROUTINE Focompu &
!
(varmodel, hoo)
IMPLICIT NONE
!arguments with intent(in):
INTEGER (KIND = short), INTENT(IN) :: varmodel
!arguments with intent out
REAL (KIND = float), INTENT(OUT) :: hoo
!local declaration:
INTEGER (KIND = short) :: i, j
REAL (KIND = float) :: alpha
REAL (KIND = float) :: h
REAL (KIND = float) :: gam
REAL (KIND = float) :: dif2
REAL (KIND = float) :: wei
!----------------------------------end of declarations-------------------------
hoo = 0.0
DO i = 1, ndir
alpha = dir (i)
DO j = 1, lagNumber (i)
h = dist (i,j)
IF (h > 0.0) THEN
CALL Variogr (varModel, h, alpha, gam)
dif2 = ( empVariogram(i,j) - gam ) ** 2.
IF (objectiveFunction == 1) THEN
wei = 1.0
ELSE IF (objectiveFunction == 2) THEN
wei = pairNumber (i,j)
ELSE IF (objectiveFunction == 3) THEN
wei = 1.0 / ( gam * gam )
ELSE IF (objectiveFunction == 4) THEN
wei = pairNumber (i,j) / ( gam * gam )
ELSE
wei = pairNumber(i,j) / ( dist(i,j) * dist(i,j) )
END IF
hoo = hoo + wei * dif2
END IF
END DO
END DO
RETURN
END SUBROUTINE Focompu